//! # Plyaer 模块的错误类型
//!
//! 包含模块需要用到的错误类型 [`Error`] 及 [`Result`]

/// # 错误类型
///
/// 1. [`std::io::Error`] IO 错误
/// 2. [`midly::Error`] Midly 错误（Midi类错误）
#[derive(Debug)]
pub enum Error {
    IO(std::io::Error),
    Midly(midly::Error),
}

/// 结果类型
pub type Result<T> = std::result::Result<T, Error>;

impl From<std::io::Error> for Error {
    /// 将 [`std::io::Error`] 转换为 [`Error`]
    fn from(err: std::io::Error) -> Error {
        Error::IO(err)
    }
}

impl From<midly::Error> for Error {
    /// 将 [`midly::Error`] 转换为 [`Error`]
    fn from(err: midly::Error) -> Error {
        Error::Midly(err)
    }
}
